package com.ethank.utils;


import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.ethank.common.utils.StringUtils;
import com.ethank.entity.oaBill.Fnainvoiceledger;

/**
 * 数据处理工具类，单独对不同类型的发票进行处理
 *
 * @author Administrator
 */
public class DataFormatUtil {
    /**
     * 根据发票类型，对发票数据进行格式化
     *
     * @param type             发票类型
     * @param dataInfo         发票数据
     * @param fnainvoiceledger 发票实体
     */
    public static void invoiceFormat(Integer type, JSONObject dataInfo, Fnainvoiceledger fnainvoiceledger) {
        try {
            // 如果billingdate字段为空
            if (fnainvoiceledger.getBillingdate() == null || "".equals(fnainvoiceledger.getBillingdate())) {
                if (type == 8) {
                    // 火车票
                    // 获取departureTime字段
                    if (dataInfo.get("departureTime") != null) {
                        // 截取年月日
                        Long timestampSeconds = DateCovertUtil.getTimeStampV2(dataInfo.getString("departureTime"));
                        fnainvoiceledger.setBillingdate(timestampSeconds>0?DateCovertUtil.secondsToFormat(timestampSeconds,"yyyy-MM-dd"):"");
                    }
                } else if (type == 14) {
                    // 航空行程单
                    if (dataInfo.get("flights") != null) {
                        JSONArray flightsInfo = dataInfo.getJSONArray("flights");
                        // 获取flightDate字段
                        if (flightsInfo != null && flightsInfo.size()>0) {
                            JSONObject jsonObject = flightsInfo.getJSONObject(0);
                            Long timestampSeconds = DateCovertUtil.getTimeStampV2(jsonObject.getString("flightDate"));
                            fnainvoiceledger.setBillingdate(timestampSeconds>0?DateCovertUtil.secondsToFormat(timestampSeconds,"yyyy-MM-dd"):"");
                        }
                    }
                } else if (type==7 ||type == 9 || type == 10) {
                    // 出租车票 过路过桥费、客运车船票
                    if (dataInfo.get("date") != null) {
                        Long timestampSeconds = DateCovertUtil.getTimeStampV2(dataInfo.getString("date"));
                        fnainvoiceledger.setBillingdate(timestampSeconds>0?DateCovertUtil.secondsToFormat(timestampSeconds,"yyyy-MM-dd"):"");
                        fnainvoiceledger.setBillingdate(dataInfo.get("date").toString());
                    }
                }
            }
        } catch (Exception e) {
            if (type == 8) {
                // 火车票
                // 获取departureTime字段
                if (dataInfo.get("departureTime") != null) {
                    // 截取年月日
                    fnainvoiceledger.setBillingdate("");
                }
            }
            e.printStackTrace();
        }
    }


    /**
     * 获取不同字段中的日期
     *
     * @param jsonData 数据
     * @return 返回
     */
    public static String getInvoiceDateOrBlank(JSONObject jsonData) {
        try {
            if (StringUtils.isNotBlank(jsonData.getString("invoiceDate"))) {
                return jsonData.getString("invoiceDate");
            } else if (StringUtils.isNotBlank(jsonData.getString("date"))) {
                return jsonData.getString("date");
            } else if (StringUtils.isNotBlank(jsonData.getString("departureTime"))) {
                return jsonData.getString("departureTime");
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}
